/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package unidad.matrices;

import DBMS.DataBaseManager;
import clases.Matriz;
import clases.Reporte;
import java.io.File;
import java.io.FileOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.actions.DownloadAction;

/**
 * Descargar el archivo en formato EXCEL
 * @author Gimbet
 */
public class DescargarMatriz extends DispatchAction {

    /*
     * forward name="success" path=""
     */
    private static final String SUCCESS = "success";
    
    private static final String name = "Descargar Reporte";


    public ActionForward execute (ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        // Download a "pdf" file - gets the file name from the
        // Action Mapping's parameter
        DataBaseManager d = DataBaseManager.getInstance();
        Matriz matriz = (Matriz) form;
        System.out.println("En descargar ano, trimestre"+matriz.getAno()+" "+matriz.getTrimestre());
        matriz = d.consultarMatrizConDatos(matriz,matriz.getAno(),matriz.getTrimestre());
        //Obtenemos el reporte
        String path = guardarArchivo()+"/"+matriz.getNombre()+".xls";//guardarArchivo()
        try{
        FileOutputStream elFichero = new FileOutputStream(path);
        System.out.println("Intentando crear reporte en " + path);
        matriz.imprimirArchivoTabla(elFichero);

        }catch(Exception e){
            request.setAttribute("Matriz",matriz);
            matriz.setMensaje("El archivo esta abierto, cerrar para poder descargar");
            System.out.println("El fichero esta abierto");
            return mapping.findForward(SUCCESS);
        }

        System.out.println(" ");
        request.setAttribute("Matriz",matriz);
        matriz.setMensajeOK("El archivo fue descargado al directorio especificado");
        //System.out.println("");
        return mapping.findForward(SUCCESS);   
    }
    
    public String guardarArchivo(){
        JFileChooser fC = new JFileChooser();
        fC.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        String path ="";
        if(fC.showSaveDialog(null)==0){
            path = fC.getSelectedFile().getAbsolutePath();
         }
        return path;
    }
}
